Цифровой сад — общедоступная персональная база знаний

Лупа для поиска
  • Свежачок
  • Карта сайта
  • 2024-08-27 1950 как заставить программы использовать Tor для обхода блокировок

    В заметке Tor Browser есть информация о том, как легко и безопасно бродить по недоступным в России веб-сайтам. Но как научить Ваши прочие приложения (а не только Tor Browser) использовали сеть Tor для обхода незаконных блокировок?

    HTTP и HTTPS прокси, а также VPN я не рассматриваю ввиду их небезопасности и возможной утечки Ваших чувствительных данных. Tor же является безопасным способом для установки анонимных защищённых соединений.

    Для примера, научим приложение yt-dlp работать через Tor, а заодно обходить защиту вида "Sign in to confirm you’re not a bot. This helps protect our community". Будем использовать операционную систему Debian Linux, хотя это не суть важно.

    Устанавливаем сам Tor, Tor SOCKS через который будут работать наши программы и obfs4proxy для поддержки мостов типа obfs.

    sudo apt install tor torsocks obfs4proxy

    Получаем список мостов подходящим для Вас способом и добавляем их в общесистемный конфигурационный файл Tor /etc/tor/torrc.

    UseBridges 1
    ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy
    Bridge obfs4 57.128.103.61:32950 4F86D9622E8A0E8B4205B89EF85F7DB8B7CC0220 cert=+lFNN1VlgYVnUZkWdPuhz/2mKPWHydm+CHXcjAuiUedfdxQUmPtAwRf8VUKPUPMei3h1HA iat-mode=0
    Bridge obfs4 217.182.211.27:33195 3AE3A0122F9BD856822F894205A30EE444CC2014 cert=JFY6acJoWywowYneRpLbvZj+nvSxI1qI6ohfAQ3eI7P/yTL9qliv4C4lwpczR3m9O/qAGA iat-mode=0

    Где,

    Проверяем, что сервис Tor запущен.

    sudo service tor@default status

    И применяем изменения конфигурации.

    sudo service tor@default reload

    Видим sudo journalctl --unit tor@default.service журнал запуска сети.

    Aug 27 21:49:36.736 [notice] Tor 0.4.7.16 running on Linux with Libevent 2.1.12-stable, OpenSSL 3.0.13, Zlib 1.2.13, Liblzma 5.4.1, Libzstd 1.5.4 and Glibc 2.36 as libc.
    Aug 27 21:49:36.736 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://support.torproject.org/faq/staying-anonymous/
    Aug 27 21:49:36.736 [notice] Read configuration file "/etc/tor/torrc".
    Aug 27 21:49:36.738 [notice] Opening Socks listener on 127.0.0.1:9050
    Aug 27 21:49:36.738 [notice] Opened Socks listener connection (ready) on 127.0.0.1:9050
    Aug 27 21:49:36.000 [notice] Parsing GEOIP IPv4 file /usr/share/tor/geoip.
    Aug 27 21:49:36.000 [notice] Parsing GEOIP IPv6 file /usr/share/tor/geoip6.
    Aug 27 21:49:37.000 [notice] Bootstrapped 0% (starting): Starting
    Aug 27 21:49:37.000 [notice] Starting with guard context "bridges"
    Aug 27 21:49:37.000 [notice] Delaying directory fetches: No running bridges
    Aug 27 21:49:38.000 [notice] Bootstrapped 1% (conn_pt): Connecting to pluggable transport
    ...
    Aug 27 21:49:45.000 [notice] Bootstrapped 100% (done): Done

    Когда соединение с сетью установится, можем запускать наши приложения через Tor командой torsocks ..., которая будет использовать порт 9050 для общения с Tor.

    Например, можем скачать видео с YouTube в максимальном качестве без каких либо ограничений.

    torsocks ./yt-dlp "https://www.youtube.com/watch?v=PIQuruu7fXE"

    Если же нам нужно скачать плейлист с большим количеством видеозаписей и чтобы YouTube не блокировал соединение считая нас ботом, мы можем подсунуть программе yt-dlp куки из браузера, в котором мы залогинены в YouTube, например в Mozilla Firefox следующей командой.

    torsocks ./yt-dlp --cookies-from-browser=firefox --output="%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" "https://www.youtube.com/playlist?list=PLRDzFCPr95fLjzcv6nNdjMu_9RcZgIM9U"

    Где,


    Двигаемся дальше. Не всегда удобно запускать программы из командной строки, для таких случаев можно использовать HTTP-прокси запущенный поверх Tor.

    Например, в России не работает обновление IDEs от JetBrains (IntelliJ IDEA, WebStorm, CLion, PyCharm, GoLand, Rider и прочие) даже в случае, если у Вас есть действующая, приобретённая за кровно заработанные деньги, лицензия. При попытке обновить IDE до актуальной версии появляется сообщение "Failed to prepare an update: We are sorry, but we are currently unable to provide our products or services to you due to export control regulations."

    Не беда. Добавляем в конфигурационный файл Tor /etc/tor/torrc ещё одну запись.

    HTTPTunnelPort 9060

    Применяем изменения конфигурации Tor sudo service tor@default reload и видим новые сообщения sudo journalctl --unit tor@default.service гласящие о запуске HTTP-прокси по адресу 127.0.0.1:9060 поверх Tor.

    Aug 28 09:42:20.824 [notice] Opening HTTP tunnel listener on 127.0.0.1:9060
    Aug 28 09:42:20.824 [notice] Opened HTTP tunnel listener connection (ready) on 127.0.0.1:9060

    Заходим в настройки HTTP Proxy в IntelliJ IDEA, указываем наш прокси и...

    Настройки HTTP-прокси для JetBrains IntelliJ IDEA.png

    ... вуаля, всё работает!

    Успешное подключение к серверам JetBrains из России через HTTP-прокси поверх Tor.png

    Альтернативно можно заменить среды разработки от JetBrains, на некоммерческие с открытым исходным кодом, например VSCode или VSCodium1.


    1. https://vscodium.com↩︎